package com.red.battleworm.element {
	import org.cove.ape.*;

	import flash.utils.getTimer;	
	
	/**
	 * @author zhangs
	 */
	public class AbstractElement extends Group {
		public static var NONESPEED : Vector = new Vector(0, 0);	// 静止速度
		public static var CHECKMINMAGNITUDE : Number = 1;			// 静止检测速度参考值
		public static var CHECKDTIME : Number = 150;				// 静止检测时间间隔（毫秒）
		
		public var body : AbstractParticle;			// APE使用的元件
		
		internal var speed : Vector = new Vector(0, 0);	// 物体速度
		internal var checkTime : Number = 0;		// 静止检测变量，保存系统时间
		internal var auto : Boolean = true;			// 自动由系统控制，或手动控制
		
		public function AbstractElement(collideInternal:Boolean = false) {
			super(collideInternal);
		}
		
		// 设置物体速度
		public function setSpeed(speed : Vector) : void {
			this.speed = speed;
			body.fixed = false;
			checkTime = getTimer();
		}
		
		// 实时速度设置及静止检测
		public function run() : void {
			var v : Vector = body.velocity;
			if (!auto) {
				v.x = speed.x;
			}
			if (v.magnitude() >= CHECKMINMAGNITUDE) {
				checkTime = getTimer();
			}
			if (body.fixed) {
				
			} else if(speed.magnitude()==0 && v.magnitude()<CHECKMINMAGNITUDE && getTimer()>=checkTime+CHECKDTIME) {
				body.fixed = true;
			} else {
				body.velocity = v;
			}
		}
	}
}
